package com.geek.javase.Ch01;

/**
 * @author chensupeng
 * @desc TODO
 * @date 2025/9/1
 *
 * 数据类型
 * 一、基本数据类型
 * 1.分类：
 * 整型：      例如：班级人数、年龄等
 *   默认类型int，默认值0
 *   byte   short   int   long
 *
 * 浮点型：    例如：身高、体重、成绩、薪资、价格等
 *   默认类型double，默认值0.0
 *   float   double
 *
 * 布尔类型：  例如：true / false
 *   默认值false
 *
 * 字符型：    例如：'男' 、 '女'
 *   默认值'\u0000' 空格
 *
 * 2.用法：
 * 2.1  声明变量，语法： 数据类型  变量名 = 值;
 * 2.2  声明方法时形参变量，语法：public void 方法名(数据类型 形参1 , 数据类型 形参2 , ...){ //方法逻辑 }
 * 2.3  声明方法时方法返回值，语法：public  数据类型  方法名(数据类型 形参1 , 数据类型 形参2 , ...){ //方法逻辑   return xx; }
 *
 *
 * 二、引用数据类型
 * 除了基本数据类型以外，都是引用数据类型；   例如：自定义类VariableDemo1 、 User 、System 、String 等
 */
public class VariableDemo3 {

    //main 主函数
    public static void main(String[] args) {
        //基本数据类型之间的转换问题

        //一、自动转换
        //小 -> 大  自动转换
        int i1 = 10;
        long l1 = i1;
        System.out.println("l1 = "+l1);

        float f1 = 3.14f;
        System.out.println("f1 = "+f1);
        double d1 = f1;
        System.out.println("d1 = "+d1);

        //int -> double 自动转换，自动补.0
        int i2 = 18;
        double d2 = i2;
        System.out.println("d2 = "+d2);

        //char -> int  自动转换,根据ASCII码表对应转换
        char c1 = 'a';
        int i3 = c1;
        System.out.println("i3 = "+i3);
        char c2 = '陈';
        int i4 = c2;
        System.out.println("i4 = "+i4);


        System.out.println("---------------------------");

        //二、强制转换
        //强制转换语法：  数据类型  变量名1 = (数据类型)变量名2;
        //大 -> 小  强制转换
        double do1 = 14.5;
        float fl1 = (float)do1;
        System.out.println("fl1 = "+fl1);

        //double -> int  强制转换，直接去除小数点后面的数字
        double do2 = 14.3;
        int in1 = (int)do2;
        System.out.println("in1 = "+in1);  //14
        double do3 = 14.7;
        int in2 = (int)do3;
        System.out.println("in2 = "+ in2); //14

        //int -> char
        int in3 = 65;
        char ch1 = (char)in3;
        System.out.println("ch1 = "+ch1);
    }

}
